# -*- coding: utf-8 -*-
'''
Created on 2018年5月9日
@author: liaolzl
'''
'''假设您是一位 领主，要去西方圣域， 但是路途上会碰到 两种凶残的妖怪： 鹰妖 和 狼妖。
于是您在去之前 要用自己的全部 灵石积蓄 去雇佣 两种战士：弓箭兵 或者 斧头兵
弓箭兵、 斧头兵、 狼妖、鹰妖 具有如下特征
弓箭兵：
     雇佣价： 100 
    最大生命值： 100
    杀伤力 
        对战鹰妖  ： 伤敌生命值 30，自损生命值 10
        对战狼妖  : 伤敌生命值 20，自损生命值 20
斧头兵：
    雇佣价： 120 
    最大生命值： 120
    杀伤力 
        对战鹰妖  ： 伤敌生命值 10，自损生命值 30
        对战狼妖  : 伤敌生命值 50，自损生命值 10
鹰妖：
    最大生命值： 200
狼妖：
    最大生命值： 300
任何战士战斗负伤后，都可以用灵石疗伤， 消耗 1灵石可以恢复生命值 1个点
任何妖怪战斗负伤后，也可以用灵石疗伤， 消耗 1灵石可以恢复生命值 2个点
根据以上的说明，请定义 5个类 战士、弓箭兵 、斧头兵、鹰妖、狼妖。'''
#解答：
class Warrior:
    def __init__(self,health):
        self.health = health
    def curing(self,curecount):
    # 如果已经到达最大生命值，灵石不起作用，浪费了
        if self.health == self.maxHealth:
            return
        self.health += curecount
    # 不能超过最大生命值
        if self.health > self.maxHealth:
            self.health = self.maxHealth
class Archers(Warrior):
    price = 100
    maxHealth = 100
    # 初始化参数是生命值, 名字
    def __init__(self, health,name='archer'):
        Warrior.__init__(self,health)
        self.name = name
    def FightWithEagle(self,eagle):
        self.health -= 10
        eagle.health -= 30
    def FightWithWolf(self,wolf):
        self.health -=20
        wolf.health -=20
class Axe(Warrior):
    price = 120
    maxHealth = 120
    def __init__(self,health,name='axe'):
        Warrior.__init__(self, health)
        self.name = name
    def FightWithEagle(self,eagle):
        self.health -= 30
        eagle.health -= 10
    def FightWithWolf(self,wolf):
        self.health -= 10
        wolf.health -= 50
class Monster:
    def __init__(self,health):
        self.health = health
    def curing(self,curecount):
    # 如果已经到达最大生命值，灵石不起作用，浪费了
        if self.health == self.maxHealth:
            return
        self.health += curecount*2
    # 不能超过最大生命值
        if self.health > self.maxHealth:
            self.health = self.maxHealth
class Eagle(Monster):
    maxHealth = 200
    def __init__(self,health):
        Monster.__init__(self, health)
    def FightWithArchers(self,archers):
        self.health -= 30
        archers.health -= 10
    def FightWithAxe(self,axe):
        self.health -= 10
        axe.health -= 30
class Wolf(Monster):
    maxHealth = 300
    def __init__(self, health):
        Monster.__init__(self, health)
    def FightWithArchers(self,archers):
        self.health -= 20
        archers.health -= 20
    def FightWithAxe(self,axe):
        self.health -= 50
        axe.health -= 10 
archer = Archers(100)
axe = Axe(100)
eagle = Eagle(200)
wolf = Wolf(200)
print('Before fighting,there life:\n','archer life:',archer.health,
      '\n','axe life:',axe.health,'\n','eagle life:',eagle.health,
      '\n','wolf life:',wolf.health)
axe.FightWithEagle(eagle)
axe.FightWithWolf(wolf)
archer.FightWithEagle(eagle)
archer.FightWithWolf(wolf)
print('After fighting,there life:\n','archer life:',archer.health,
      '\n','axe life:',axe.health,'\n','eagle life:',eagle.health,
      '\n','wolf life:',wolf.health)
archer.curing(20)
print('archer is curing!archer life:',archer.health)
eagle.curing(50)
print('eagle is curing!eagle life:',eagle.health)